/*
    1 2 true null   =>字面量
    var 变量名 = 变量值;
*/


//直接定义字面量
let a: 10;
// a=11     保错
// a='10'   也报错

//逻辑运算符 & | ！
//  |
let b: 'man' | 'woman';
// b='man'
// b='woman'
// b='cc'

// number string undefined null boolean 
// let a1=1

// 任意类型 any  隐性类型(没给类型默认为any)
// 如果给变量定义类型any   相当于关闭了ts效验
let c: any;
c = 1
c = '1'
c = true
c = null

// unknown  位置类型   线性类型
let d: unknown;
d = 1;
d = '1'
d = true
d = null

d = 'hello'

let e: string;
//unknown  与  any
//any 可以给任意类型进行赋值
//unknown 不可以给任意类型进行赋值

e = c
// e=d  报错
if (typeof d === 'string') {
    e = d
}


//  类型断言:告知解析器究竟是什么类型
// 1.数据 as 类型
e = d as string;
// 2.<类型>数据 
e = <string>d;


//void 用来表示空就是    没有return会报错
function fn1(): void {
    console.log('fn1');
    // return '12345';   报错
}
// fn1()


//never 永远不允许反出结果   任何形式
function fn2() {
    // console.log(1);
    throw new Error("123");
}

fn2()









export { }


